<template>
    <div>
        <!--引用表格-->
        <BasicTable @register="registerTable" :rowSelection="rowSelection" :searchInfo="searchInfo">
            <!--插槽:table标题-->
            <template #tableTitle>
                <!-- <a-button type="primary" @click="handleCreate" preIcon="ant-design:plus-outlined"> 新增</a-button> -->
                <a-button type="primary" preIcon="ant-design:export-outlined" @click="onExportXls"> 导出</a-button>
                <j-upload-button type="primary" preIcon="ant-design:import-outlined"
                    @click="onImportXls">导入</j-upload-button>
                <!-- <a-dropdown v-if="selectedRowKeys.length > 0">
                    <template #overlay>
                        <a-menu>
                            <a-menu-item key="1" @click="batchHandleDelete">
                                <Icon icon="ant-design:delete-outlined"></Icon>
                                删除
                            </a-menu-item>
                        </a-menu>
                    </template>
<a-button>批量操作
    <Icon icon="mdi:chevron-down"></Icon>
</a-button>
</a-dropdown> -->
            </template>
            <!--操作栏-->
            <template #action="{ record }">
                <TableAction :actions="getTableAction(record)" />
            </template>
            <!--字段回显插槽-->
            <template v-slot:bodyCell="{ column, record, index, text }">
            </template>
        </BasicTable>

        <NurseUserBillInvoiceModal @register="registerModal" @success="handleSuccess" />
    </div>
</template>

<script lang="ts" setup>
import { ref, computed, unref, inject, watch } from 'vue';
import { BasicTable, useTable, TableAction } from '/@/components/Table';
import { useListPage } from '/@/hooks/system/useListPage'
import { useModal } from '/@/components/Modal';
import NurseUserBillInvoiceModal from './components/NurseUserBillInvoiceModal.vue'
import { nurseUserBillInvoiceColumns } from './NurseUserBill.data';
import { nurseUserBillInvoiceList, nurseUserBillInvoiceDelete, nurseUserBillInvoiceDeleteBatch, nurseUserBillInvoiceExportXlsUrl, nurseUserBillInvoiceImportUrl } from './NurseUserBill.api';
import { isEmpty } from "/@/utils/is";
import { useMessage } from '/@/hooks/web/useMessage';
import { downloadFile } from '/@/utils/common/renderUtils';
import { defHttp } from '/@/utils/http/axios';

//接收主表id
const mainId = inject('mainId') || '';
//提示弹窗
const $message = useMessage()
//弹窗model
const [registerModal, { openModal }] = useModal();
const searchInfo = {};
// 列表页面公共参数、方法
const { prefixCls, tableContext, onImportXls, onExportXls } = useListPage({
    tableProps: {
        api: nurseUserBillInvoiceList,
        columns: nurseUserBillInvoiceColumns,
        canResize: false,
        useSearchForm: false,
        actionColumn: {
            fixed: 'right',
            width: 180,
        },
        pagination: {
            current: 1,
            pageSize: 5,
            pageSizeOptions: ['5', '10', '20'],
        }
    },
    exportConfig: {
        name: '用户电子发票',
        url: nurseUserBillInvoiceExportXlsUrl,
        params: {
            'billId': mainId
        }
    },
    importConfig: {
        url: () => {
            return nurseUserBillInvoiceImportUrl + '/' + unref(mainId)
        }
    }
});

//注册table数据
const [registerTable, { reload }, { rowSelection, selectedRowKeys }] = tableContext;

watch(mainId, () => {
    searchInfo['billId'] = unref(mainId);
    reload();
}
);

/**
 * 新增事件
 */
function handleCreate() {
    if (isEmpty(unref(mainId))) {
        $message.createMessage.warning('请选择一个主表信息')
        return;
    }
    openModal(true, {
        isUpdate: false,
        showFooter: true,
    });
}

/**
 * 编辑事件
 */
async function handleEdit(record: Recordable) {
    openModal(true, {
        record,
        isUpdate: true,
        showFooter: true,
    });
}



/**
 * 删除事件
 */
async function handleDelete(record) {
    await nurseUserBillInvoiceDelete({ id: record.id }, handleSuccess);
}

/**
 * 批量删除事件
 */
async function batchHandleDelete() {
    await nurseUserBillInvoiceDeleteBatch({ ids: selectedRowKeys.value }, handleSuccess)
}

/**
 * 成功回调
 */
function handleSuccess() {
    (selectedRowKeys.value = []) && reload();
}
/**
 * 开具发票
 */
async function handleAddInvoice(record: Recordable) {
    const extend = record.extend ? JSON.parse(record.extend) : {};
    const params = {
        address: extend?.address,
        bankAccount: extend?.bankAccount,
        bankName: extend?.bankName,
        remark: extend?.remark,
        dutyParagraph: record.dutyParagraph,
        invoiceHeader: record.invoiceHeader,
        invoiceType: record.invoiceType,
        orderId: record.orderId,
        phone: record.phone,
        email: record.email,
        receiveType: record.receiveType,
        mode: record.mode,
        totalPrice: record.totalPrice
    }
    await defHttp.post({ url: "/nurse_user_bill/nurseUserBillInvoice/openElectronicInvoice", params });
    reload()
}


/**
 * 操作栏
 */
function getTableAction(record) {
    return [
        {
            label: '编辑',
            onClick: handleEdit.bind(null, record),
        }, {
            label: '开具发票',
            onClick: handleAddInvoice.bind(null, record),
        },
        // {
        //     label: '删除',
        //     popConfirm: {
        //         title: '是否确认删除',
        //         confirm: handleDelete.bind(null, record),
        //         placement: 'topLeft',
        //     },
        // }
    ]
}
</script>
